プロキシ使用時に CloudWatch Agent を用いたログの転送に失敗したときの対処方法
EC2 インスタンスからプロキシを経由して外部へ接続する場合、インスタンスメタデータサービスへの通信は除外する必要があります。no_proxy の設定として 169.254.169.254 を追加してください。
困っていた内容
CloudWatch Agent から EC2 インスタンス内部のログを、CloudWatch Logs へ転送する処理を行っています。
EC2 インスタンスにはプロキシ経由で通信をする設定をしています。
その際に、以下のエラーメッセージが発生しており、ログの転送に失敗しています。
2021-MM-DDThh:mm:ssZ E! [outputs.cloudwatchlogs] Aws error received when sending logs to ****: RequestError: send request failed caused by: Post "https://logs.ap-northeast-1.amazonaws.com/": proxyconnect tcp: tls: first record does not look like a TLS handshake
対処方法を教えてください。
どう対応すればいいの?
EC2 インスタンスからプロキシを経由して外部へ接続する場合、インスタンスメタデータサービスへの通信は除外する必要があります。
そのため、no_proxy の設定として 169.254.169.254 を追加してください。
common-config.toml
[proxy] http_proxy = "http://xxx.xxx.xxx.xxx:<ポート番号>" https_proxy = "http://xxx.xxx.xxx.xxx:<ポート番号>" no_proxy = "169.254.169.254"
環境変数
Linux または macOS
$ export NO_PROXY=169.254.169.254
Windows
C:\> setx NO_PROXY 169.254.169.254
参考資料
HTTP プロキシを使用する - AWS Command Line Interface